--[[模块延迟加载模型
	事先声明对全局变量的占用，等需要的时候再进行实际的加载
]]
local M = {
	modMap = {}
}

function M.getModMap(key)
	return M.modMap[key]
end
function M.setModMap(key, value)
	M.modMap[key] = value
end

function M.setGlobalMetatable()
	local meta = {}

	meta.__index = function(t, key)
		local modPath = M.getModMap(key)
		if modPath then
			_G[key] = require(modPath)
			return _G[key]
		end
	end

	setmetatable(_G, meta)
end

function M.init()
	M.setGlobalMetatable()
end

function M.preDeclareMod(globalName, modPath)
	M.setModMap(globalName, modPath)
end

M.init()

return M